///Set survey weights
svyset weight

///Descriptive statistics for key variables
by educat, sort: tabstat univ cons, statistics( mean sd min max) columns(statistics)
by educat, sort: tabstat ideo opideo, statistics( mean sd min max) columns(statistics)

by polintr, sort: tabstat univ cons, statistics( mean sd min max) columns(statistics)
by polintr, sort: tabstat ideo opideo, statistics( mean sd min max) columns(statistics)

/// Table S1: Symbolic Ideology OLS by Education
regress ideo univ cons sex married black hisp income age rep dem if educat==1 [pw=weight],cformat(%4.2f)
est store model1
regress ideo univ cons sex married black hisp income age rep dem if educat==2 [pw=weight],cformat(%4.2f)
est store model2
regress ideo univ cons sex married black hisp income age rep dem if educat==3 [pw=weight],cformat(%4.2f)
est store model3
regress ideo univ cons sex married black hisp income age rep dem if educat==4 [pw=weight],cformat(%4.2f)
est store model4

esttab model1 model2 model3 model4, b(%6.2f) t r2 ///
  title(Table S1: Predicting Symbolic Ideology across Levels of Education, OLS) ///
  nonumbers mtitles("< HS" "HS/HS+" "BA/BS/Mast" "PhD") ///
  addnote("Source: 2015 GfK Survey")  

/// Table S2: Symbolic Ideology OLS by Interest
regress ideo univ cons sex married black hisp income age rep dem if polintr==1 [pw=weight],cformat(%4.2f)
est store model5
regress ideo univ cons sex married black hisp income age rep dem if polintr==2 [pw=weight],cformat(%4.2f)
est store model6
regress ideo univ cons sex married black hisp income age rep dem if polintr==3 [pw=weight],cformat(%4.2f)
est store model7
regress ideo univ cons sex married black hisp income age rep dem if polintr==4 [pw=weight],cformat(%4.2f)
est store model8

esttab model5 model6 model7 model8, b(%6.2f) t r2 ///
  title(Table S2: Predicting Symbolic Ideology across Political Interest Levels, OLS) ///
  nonumbers mtitles("None" "A little" "Some" "High") ///
  addnote("Source: 2015 GfK Survey") 

    
/// Table S3: Symbolic Ideology EIV by Education
/// alphas from EQS generated estimates Table 3
eivreg ideo univ cons sex married black hisp income age rep dem if educat==1, r(univ .75 cons .73) cformat(%4.2f)
est store model9

eivreg ideo univ cons sex married black hisp income age rep dem if educat==2, r(univ .74 cons .71) cformat(%4.2f)
est store model10

eivreg ideo univ cons sex married black hisp income age rep dem if educat==3, r(univ .74 cons .73) cformat(%4.2f)
est store model11

eivreg ideo univ cons sex married black hisp income age rep dem if educat==4, r(univ .78 cons .72) cformat(%4.2f)
est store model12

esttab model9 model10 model11 model12, b(%6.2f) t r2 ///
  title(Table S3: Predicting Symbolic Ideology across Levels of Education, EIV) ///
  nonumbers mtitles("< HS" "HS/HS+" "BA/BS/Mast" "PhD") ///
  addnote("Source: 2015 GfK Survey")   

 
/// Table S4: Symbolic Ideology EIV by Interest
/// alphas from EQS generated estimates Table 3
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==1, r(univ .77 cons .74) cformat(%4.2f)
est store model13	

eivreg ideo univ cons sex married black hisp income age rep dem if polintr==2, r(univ .72 cons .70) cformat(%4.2f)
est store model14

eivreg ideo univ cons sex married black hisp income age rep dem if polintr==3, r(univ .72 cons .72) cformat(%4.2f)
est store model15

eivreg ideo univ cons sex married black hisp income age rep dem if polintr==4, r(univ .75 cons .73) cformat(%4.2f)
est store model16

esttab model13 model14 model15 model16, b(%6.2f) t r2 ///
  title(Table S4: Predicting Symbolic Ideology across Political Interest Levels, EIV) ///
  nonumbers mtitles("None" "A little" "Some" "High") ///
  addnote("Source: 2015 GfK Survey")   
   

///Figure 1
/// Symbolic Ideology by Education
coefplot(model1, label(< HS) msymbol(D)) ///
	(model2, label(HS/HS+) msymbol(T)) ///
	(model3, label(BA/BS/MA) msymbol(S)) ///
	(model4, label(Doctorate) msymbol(X)), bylabel(OLS Coefficient) ///
	|| model9 model10 model11 model12, bylabel(EIV Coefficient) ///
	||, drop (sex married black hisp income age rep dem _cons) xline(0, lpattern(dash)) ///
	ylabel(1 "Universalism" 2 "Conservation", labsize(small) angle(90)) ///
	byopts (title("Across Education Levels", size(medium) margin(vsmall))) ///
	legend(size(small) rows(1)) ///
	scheme(s1mono) ///
    name(figure1a, replace)
 
/// Symbolic Ideology by Interest
coefplot(model5, label(No Interest) msymbol(D)) ///
	(model6, label(Little Interest) msymbol(T)) ///
	(model7, label(Some Interest) msymbol(S)) ///
	(model8, label(High Interest) msymbol(X)), bylabel(OLS Coefficient) ///
	|| model13 model14 model15 model16, bylabel(EIV Coefficient) ///
	||, drop (sex married black hisp income age rep dem _cons) xline(0, lpattern(dash)) ///
	ylabel(1 "Universalism" 2 "Conservation", labsize(small) angle(90)) ///
	xlabel(-1(.5)1) ///
	byopts (title("Across Interest Levels", size(medium) margin(vsmall))) ///
	legend(size(small) rows(1)) ///
	scheme(s1mono) ///
    name(figure1b, replace)
	
///Figure 1
graph combine figure1a figure1b, rows(2) ///
title("", size(medium)) ///
scheme(s1mono) ysize(8)
graph export fig1v4.png, width (1248) height (1814) replace

/// Table S5: Operational ideology OLS by Educ
regress opideo univ cons sex married black hisp income age rep dem if educat==1 [pw=weight],cformat(%4.2f)
est store model17
regress opideo univ cons sex married black hisp income age rep dem if educat==2 [pw=weight],cformat(%4.2f)
est store model18
regress opideo univ cons sex married black hisp income age rep dem if educat==3 [pw=weight],cformat(%4.2f)
est store model19
regress opideo univ cons sex married black hisp income age rep dem if educat==4 [pw=weight],cformat(%4.2f)
est store model20

esttab model17 model18 model19 model20, b(%6.2f) t r2 ///
  title(Table S5: Predicting Operational Ideology across Levels of Education, OLS)///
  nonumbers mtitles("< HS" "HS/HS+" "BA/BS/Mast" "PhD") ///
  addnote("Source: 2015 GfK Survey")  

  
/// Table S6: Operational ideology OLS by Interest
regress opideo univ cons sex married black hisp income age rep dem if polintr==1 [pw=weight],cformat(%4.2f)
est store model21
regress opideo univ cons sex married black hisp income age rep dem if polintr==2 [pw=weight],cformat(%4.2f)
est store model22
regress opideo univ cons sex married black hisp income age rep dem if polintr==3 [pw=weight],cformat(%4.2f)
est store model23
regress opideo univ cons sex married black hisp income age rep dem if polintr==4 [pw=weight],cformat(%4.2f)
est store model24

esttab model21 model22 model23 model24, b(%6.2f) t r2 ///
  title(Table S6: Predicting Operational Ideology across Political Interest Levels, OLS) ///
  nonumbers mtitles("None" "A little" "Some" "High") ///
  addnote("Source: 2015 GfK Survey") 
  
  
/// Table S7: Operational ideology EIV by Educ
eivreg opideo univ cons sex married black hisp income age rep dem if educat==1, r(univ .75 cons .73) cformat(%4.2f)
est store model25
eivreg opideo univ cons sex married black hisp income age rep dem if educat==2, r(univ .74 cons .71) cformat(%4.2f)
est store model26
eivreg opideo univ cons sex married black hisp income age rep dem if educat==3, r(univ .74 cons .73) cformat(%4.2f)
est store model27
eivreg opideo univ cons sex married black hisp income age rep dem if educat==4, r(univ .78 cons .72) cformat(%4.2f)
est store model28

esttab model25 model26 model27 model28, b(%6.2f) t r2 ///
  title(Table S7: Predicting Operational Ideology across Levels of Education, EIV) ///
  nonumbers mtitles("< HS" "HS/HS+" "BA/BS/MA" "PhD") ///
  addnote("Source: 2015 GfK Survey")   
  

/// Table S8: Operational Ideology EIV by Interest
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==1, r(univ .77 cons .74) cformat(%4.2f)
est store model29
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==2, r(univ .72 cons .70) cformat(%4.2f)
est store model30
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==3, r(univ .72 cons .72) cformat(%4.2f)
est store model31
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==4, r(univ .75 cons .73) cformat(%4.2f)
est store model32

esttab model29 model30 model31 model32, b(%6.2f) t r2 ///
  title(Table S8: Predicting temping Opinion across Political Interest Levels, EIV) ///
  nonumbers mtitles("None" "A little" "Some" "High") ///
  addnote("Source: 2015 GfK Survey") 


///Figure 2
/// Operational Ideology by Education
coefplot(model17, label(< HS) msymbol(D)) ///
	(model8, label(HS/HS+) msymbol(T)) ///
	(model9, label(BA/BS/MA) msymbol(S)) ///
	(model20, label(Doctorate) msymbol(X)), bylabel(OLS Coefficient) ///
	|| model25 model26 model27 model28, bylabel(EIV Coefficient) ///
	||, drop (sex married black hisp income age rep dem _cons) xline(0, lpattern(dash)) ///
	ylabel(1 "Universalism" 2 "Conservation", labsize(small) angle(90)) ///
	byopts (title("Across Education Levels", size(medium) margin(vsmall))) ///
	legend(size(small) rows(1)) ///
	scheme(s1mono) ///
    name(figure2a, replace)
	
/// Operational Ideology by Interest
coefplot(model21, label(No Interest) msymbol(D)) ///
	(model22, label(Little Interest) msymbol(T)) ///
	(model23, label(Some Interest) msymbol(S)) ///
	(model24, label(High Interest) msymbol(X)), bylabel(OLS Coefficient) ///
	|| model29 model30 model31 model32, bylabel(EIV Coefficient) ///
	||, drop (sex married black hisp income age rep dem _cons) xline(0, lpattern(dash)) ///
	ylabel(1 "Universalism" 2 "Conservation", labsize(small) angle(90)) ///
	xlabel(-1(.5)1) ///
	byopts (title("Across Interest Levels", size(medium) margin(vsmall))) ///
	legend(size(small) rows(1)) ///
	scheme(s1mono) ///
    name(figure2b, replace)

///Figure 2
graph combine figure2a figure2b, rows(2) ///
title("", size(medium)) ///
scheme(s1mono) ysize(8)
graph export fig2v4.png, width (1248) height (1814) replace


///Testing coefficient differences, Tables S1-8
///Table S1
svy, subpop(lths): regress ideo univ cons sex married black hisp income age rep dem, cformat(%4.2f)
est store model75
svy, subpop(hs): regress ideo univ cons sex married black hisp income age rep dem, cformat(%4.2f)
est store model76
svy, subpop(bms): regress ideo univ cons sex married black hisp income age rep dem, cformat(%4.2f)
est store model77
svy, subpop(phd): regress ideo univ cons sex married black hisp income age rep dem, cformat(%4.2f)
est store model78

suest model75 model76
test [model75]univ=[model76]univ
test [model75]cons=[model76]cons

suest model75 model77
test [model75]univ=[model77]univ
test [model75]cons=[model77]cons

suest model75 model78
test [model75]univ=[model78]univ
test [model75]cons=[model78]cons

suest model76 model77
test [model76]univ=[model77]univ
test [model76]cons=[model77]cons

suest model76 model78
test [model76]univ=[model78]univ
test [model76]cons=[model78]cons

suest model77 model78
test [model77]univ=[model78]univ
test [model77]cons=[model78]cons

///Table S2
svy, subpop(lowi): regress ideo univ cons sex married black hisp income age rep dem, cformat(%4.2f)
est store model79
svy, subpop(midi): regress ideo univ cons sex married black hisp income age rep dem, cformat(%4.2f)
est store model80
svy, subpop(highi): regress ideo univ cons sex married black hisp income age rep dem, cformat(%4.2f)
est store model81
svy, subpop(vhighi): regress ideo univ cons sex married black hisp income age rep dem, cformat(%4.2f)
est store model82

suest model79 model80
test [model79]univ=[model80]univ
test [model79]cons=[model80]cons

suest model79 model81
test [model79]univ=[model81]univ
test [model79]cons=[model81]cons

suest model79 model82
test [model79]univ=[model82]univ
test [model79]cons=[model82]cons

suest model80 model81
test [model80]univ=[model81]univ
test [model80]cons=[model81]cons

suest model80 model82
test [model80]univ=[model82]univ
test [model80]cons=[model82]cons

suest model81 model82
test [model81]univ=[model82]univ
test [model81]cons=[model82]cons

///Table S3
program define myboot91, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if educat==1, r(univ .75 cons .73) cformat(%4.2f)
return scalar p1_cons = _b[cons]
eivreg ideo univ cons sex married black hisp income age rep dem if educat==2, r(univ .74 cons .71) cformat(%4.2f)
return scalar p2_cons = _b[cons]
end

bootstrap p1_cons=r(p1_cons) p2_cons=r(p2_cons),  ///
                  reps(500) seed(123) nodrop : myboot91
test _b[p1_cons]=_b[p2_cons]

program define myboot92, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if educat==1, r(univ .75 cons .73) cformat(%4.2f)
return scalar p1_cons = _b[cons]
eivreg ideo univ cons sex married black hisp income age rep dem if educat==3, r(univ .74 cons .73) cformat(%4.2f)
return scalar p3_cons = _b[cons]
end

bootstrap p1_cons=r(p1_cons) p3_cons=r(p3_cons),  ///
                  reps(500) seed(123) nodrop : myboot92
test _b[p1_cons]=_b[p3_cons]


program define myboot90, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if educat==1, r(univ .75 cons .73) cformat(%4.2f)
return scalar p1_cons = _b[cons]
eivreg ideo univ cons sex married black hisp income age rep dem if educat==4, r(univ .78 cons .72) cformat(%4.2f)
return scalar p4_cons = _b[cons]
end

bootstrap p1_cons=r(p1_cons) p4_cons=r(p4_cons),  ///
                  reps(500) seed(123) nodrop : myboot90
test _b[p1_cons]=_b[p4_cons]

program define myboot93, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if educat==2, r(univ .74 cons .71) cformat(%4.2f)
return scalar p2_cons = _b[cons]
eivreg ideo univ cons sex married black hisp income age rep dem if educat==3, r(univ .74 cons .73) cformat(%4.2f)
return scalar p3_cons = _b[cons]
end

bootstrap p2_cons=r(p2_cons) p3_cons=r(p3_cons),  ///
                  reps(500) seed(123) nodrop : myboot93
test _b[p2_cons]=_b[p3_cons]

program define myboot94, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if educat==2, r(univ .74 cons .71) cformat(%4.2f)
return scalar p2_cons = _b[cons]
eivreg ideo univ cons sex married black hisp income age rep dem if educat==4, r(univ .78 cons .72) cformat(%4.2f)
return scalar p4_cons = _b[cons]
end

bootstrap p2_cons=r(p2_cons) p4_cons=r(p4_cons),  ///
                  reps(500) seed(123) nodrop : myboot94
test _b[p2_cons]=_b[p4_cons]

program define myboot95, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if educat==3, r(univ .74 cons .73) cformat(%4.2f)
return scalar p3_cons = _b[cons]
eivreg ideo univ cons sex married black hisp income age rep dem if educat==4, r(univ .78 cons .72) cformat(%4.2f)
return scalar p4_cons = _b[cons]
end

bootstrap p3_cons=r(p3_cons) p4_cons=r(p4_cons),  ///
                  reps(500) seed(123) nodrop : myboot95
test _b[p3_cons]=_b[p4_cons]

program define myboot97, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if educat==1, r(univ .75 cons .73) cformat(%4.2f)
return scalar p1_univ = _b[univ]
eivreg ideo univ cons sex married black hisp income age rep dem if educat==2, r(univ .74 cons .71) cformat(%4.2f)
return scalar p2_univ = _b[univ]
end

bootstrap p1_univ=r(p1_univ) p2_univ=r(p2_univ),  ///
                  reps(500) seed(123) nodrop : myboot97
test _b[p1_univ]=_b[p2_univ]

program define myboot98, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if educat==1, r(univ .75 cons .73) cformat(%4.2f)
return scalar p1_univ = _b[univ]
eivreg ideo univ cons sex married black hisp income age rep dem if educat==3, r(univ .74 cons .73) cformat(%4.2f)
return scalar p3_univ = _b[univ]
end

bootstrap p1_univ=r(p1_univ) p3_univ=r(p3_univ),  ///
                  reps(500) seed(123) nodrop : myboot98
test _b[p1_univ]=_b[p3_univ]


program define myboot99, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if educat==1, r(univ .75 cons .73) cformat(%4.2f)
return scalar p1_univ = _b[univ]
eivreg ideo univ cons sex married black hisp income age rep dem if educat==4, r(univ .78 cons .72) cformat(%4.2f)
return scalar p4_univ = _b[univ]
end

bootstrap p1_univ=r(p1_univ) p4_univ=r(p4_univ),  ///
                  reps(500) seed(123) nodrop : myboot99
test _b[p1_univ]=_b[p4_univ]

program define myboot100, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if educat==2, r(univ .74 cons .71) cformat(%4.2f)
return scalar p2_univ = _b[univ]
eivreg ideo univ cons sex married black hisp income age rep dem if educat==3, r(univ .74 cons .73) cformat(%4.2f)
return scalar p3_univ = _b[univ]
end

bootstrap p2_univ=r(p2_univ) p3_univ=r(p3_univ),  ///
                  reps(500) seed(123) nodrop : myboot100
test _b[p2_univ]=_b[p3_univ]

program define myboot101, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if educat==2, r(univ .74 cons .71) cformat(%4.2f)
return scalar p2_univ = _b[univ]
eivreg ideo univ cons sex married black hisp income age rep dem if educat==4, r(univ .78 cons .72) cformat(%4.2f)
return scalar p4_univ = _b[univ]
end

bootstrap p2_univ=r(p2_univ) p4_univ=r(p4_univ),  ///
                  reps(500) seed(123) nodrop : myboot101
test _b[p2_univ]=_b[p4_univ]

program define myboot102, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if educat==3, r(univ .74 cons .73) cformat(%4.2f)
return scalar p3_univ = _b[univ]
eivreg ideo univ cons sex married black hisp income age rep dem if educat==4, r(univ .78 cons .72) cformat(%4.2f)
return scalar p4_univ = _b[univ]
end

bootstrap p3_univ=r(p3_univ) p4_univ=r(p4_univ),  ///
                  reps(500) seed(123) nodrop : myboot102
test _b[p3_univ]=_b[p4_univ]

///Table S4
program define myboot106, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==1, r(univ .77 cons .74) cformat(%4.2f)
return scalar p1_cons = _b[cons] 
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==2, r(univ .72 cons .70) cformat(%4.2f)
return scalar p2_cons = _b[cons] 
end 

bootstrap p1_cons=r(p1_cons) p2_cons=r(p2_cons),  ///
                  reps(500) seed(123) nodrop : myboot106
test _b[p1_cons]=_b[p2_cons]

program define myboot107, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==1, r(univ .77 cons .74) cformat(%4.2f)
return scalar p1_cons = _b[cons] 
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==3, r(univ .72 cons .72) cformat(%4.2f)
return scalar p3_cons = _b[cons] 
end 

bootstrap p1_cons=r(p1_cons) p3_cons=r(p3_cons),  ///
                  reps(500) seed(123) nodrop : myboot107
test _b[p1_cons]=_b[p3_cons]

program define myboot45, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==1, r(univ .77 cons .74) cformat(%4.2f)
return scalar p1_cons = _b[cons]
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==4, r(univ .75 cons .73) cformat(%4.2f)
return scalar p4_cons = _b[cons]
end

bootstrap p1_cons=r(p1_cons) p4_cons=r(p4_cons),  ///
                  reps(500) seed(123) nodrop : myboot45
test _b[p1_cons]=_b[p4_cons]

program define myboot108, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==2, r(univ .72 cons .70) cformat(%4.2f)
return scalar p2_cons = _b[cons] 
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==3, r(univ .72 cons .72) cformat(%4.2f)
return scalar p3_cons = _b[cons] 
end 

bootstrap p2_cons=r(p2_cons) p3_cons=r(p3_cons),  ///
                  reps(500) seed(123) nodrop : myboot108
test _b[p2_cons]=_b[p3_cons]

program define myboot109, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==2, r(univ .72 cons .70) cformat(%4.2f)
return scalar p2_cons = _b[cons] 
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==4, r(univ .75 cons .73) cformat(%4.2f)
return scalar p4_cons = _b[cons] 
end 

bootstrap p2_cons=r(p2_cons) p4_cons=r(p4_cons),  ///
                  reps(500) seed(123) nodrop : myboot109
test _b[p2_cons]=_b[p4_cons]

program define myboot110, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==3, r(univ .72 cons .72) cformat(%4.2f)
return scalar p3_cons = _b[cons] 
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==4, r(univ .75 cons .73) cformat(%4.2f)
return scalar p4_cons = _b[cons] 
end 

bootstrap p3_cons=r(p3_cons) p4_cons=r(p4_cons),  ///
                  reps(500) seed(123) nodrop : myboot110
test _b[p3_cons]=_b[p4_cons]

program define myboot111, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==1, r(univ .77 cons .74) cformat(%4.2f)
return scalar p1_univ = _b[univ] 
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==2, r(univ .72 cons .70) cformat(%4.2f)
return scalar p2_univ = _b[univ] 
end 

bootstrap p1_univ=r(p1_univ) p2_univ=r(p2_univ),  ///
                  reps(500) seed(123) nodrop : myboot111
test _b[p1_univ]=_b[p2_univ]

program define myboot112, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==1, r(univ .77 cons .74) cformat(%4.2f)
return scalar p1_univ = _b[univ] 
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==3, r(univ .72 cons .72) cformat(%4.2f)
return scalar p3_univ = _b[univ] 
end 

bootstrap p1_univ=r(p1_univ) p3_univ=r(p3_univ),  ///
                  reps(500) seed(123) nodrop : myboot112
test _b[p1_univ]=_b[p3_univ]

program define myboot113, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==1, r(univ .77 cons .74) cformat(%4.2f)
return scalar p1_univ = _b[univ]
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==4, r(univ .75 cons .73) cformat(%4.2f)
return scalar p4_univ = _b[univ]
end

bootstrap p1_univ=r(p1_univ) p4_univ=r(p4_univ),  ///
                  reps(500) seed(123) nodrop : myboot113
test _b[p1_univ]=_b[p4_univ]

program define myboot114, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==2, r(univ .72 cons .70) cformat(%4.2f)
return scalar p2_univ = _b[univ] 
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==3, r(univ .72 cons .72) cformat(%4.2f)
return scalar p3_univ = _b[univ] 
end 

bootstrap p2_univ=r(p2_univ) p3_univ=r(p3_univ),  ///
                  reps(500) seed(123) nodrop : myboot114
test _b[p2_univ]=_b[p3_univ]

program define myboot115, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==2, r(univ .72 cons .70) cformat(%4.2f)
return scalar p2_univ = _b[univ] 
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==4, r(univ .75 cons .73) cformat(%4.2f)
return scalar p4_univ = _b[univ] 
end 

bootstrap p2_univ=r(p2_univ) p4_univ=r(p4_univ),  ///
                  reps(500) seed(123) nodrop : myboot115
test _b[p2_univ]=_b[p4_univ]

program define myboot116, rclass
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==3, r(univ .72 cons .72) cformat(%4.2f)
return scalar p3_univ = _b[univ] 
eivreg ideo univ cons sex married black hisp income age rep dem if polintr==4, r(univ .75 cons .73) cformat(%4.2f)
return scalar p4_univ = _b[univ] 
end 

bootstrap p3_univ=r(p3_univ) p4_univ=r(p4_univ),  ///
                  reps(500) seed(123) nodrop : myboot116
test _b[p3_univ]=_b[p4_univ]

///Table S5
svy, subpop(lths): regress opideo univ cons sex married black hisp income age rep dem, cformat(%4.2f)
est store model125
svy, subpop(hs): regress opideo univ cons sex married black hisp income age rep dem, cformat(%4.2f)
est store model126
svy, subpop(bms): regress opideo univ cons sex married black hisp income age rep dem, cformat(%4.2f)
est store model1212
svy, subpop(phd): regress opideo univ cons sex married black hisp income age rep dem, cformat(%4.2f)
est store model128

suest model125 model126
test [model125]univ=[model126]univ
test [model125]cons=[model126]cons

suest model125 model1212
test [model125]univ=[model1212]univ
test [model125]cons=[model1212]cons


suest model125 model128
test [model125]univ=[model128]univ
test [model125]cons=[model128]cons

suest model126 model1212
test [model126]univ=[model1212]univ
test [model126]cons=[model1212]cons

suest model126 model128
test [model126]univ=[model128]univ
test [model126]cons=[model128]cons

suest model1212 model128
test [model1212]univ=[model128]univ
test [model1212]cons=[model128]cons

///Table S6
svy, subpop(lowi): regress opideo univ cons sex married black hisp income age rep dem, cformat(%4.2f)
est store model500
svy, subpop(midi): regress opideo univ cons sex married black hisp income age rep dem, cformat(%4.2f)
est store model501
svy, subpop(highi): regress opideo univ cons sex married black hisp income age rep dem, cformat(%4.2f)
est store model502
svy, subpop(vhighi): regress opideo univ cons sex married black hisp income age rep dem, cformat(%4.2f)
est store model503

suest model500 model501
test [model500]univ=[model501]univ
test [model500]cons=[model501]cons

suest model500 model502
test [model500]univ=[model502]univ
test [model500]cons=[model502]cons

suest model500 model503
test [model500]univ=[model503]univ
test [model500]cons=[model503]cons

suest model501 model502
test [model501]univ=[model502]univ
test [model501]cons=[model502]cons

suest model501 model503
test [model501]univ=[model503]univ
test [model501]cons=[model503]cons

suest model502 model503
test [model502]univ=[model503]univ
test [model502]cons=[model503]cons

///Table S7
program define myboot666, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if educat==1, r(univ .75 cons .73) cformat(%4.2f)
return scalar p1_cons = _b[cons]
eivreg opideo univ cons sex married black hisp income age rep dem if educat==2, r(univ .74 cons .71) cformat(%4.2f)
return scalar p2_cons = _b[cons]
end

bootstrap p1_cons=r(p1_cons) p2_cons=r(p2_cons),  ///
                  reps(500) seed(123) nodrop : myboot666
test _b[p1_cons]=_b[p2_cons]

program define myboot667, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if educat==1, r(univ .75 cons .73) cformat(%4.2f)
return scalar p1_cons = _b[cons]
eivreg opideo univ cons sex married black hisp income age rep dem if educat==3, r(univ .74 cons .73) cformat(%4.2f)
return scalar p3_cons = _b[cons]
end

bootstrap p1_cons=r(p1_cons) p3_cons=r(p3_cons),  ///
                  reps(500) seed(123) nodrop : myboot667
test _b[p1_cons]=_b[p3_cons]


program define myboot668, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if educat==1, r(univ .75 cons .73) cformat(%4.2f)
return scalar p1_cons = _b[cons]
eivreg opideo univ cons sex married black hisp income age rep dem if educat==4, r(univ .78 cons .72) cformat(%4.2f)
return scalar p4_cons = _b[cons]
end

bootstrap p1_cons=r(p1_cons) p4_cons=r(p4_cons),  ///
                  reps(500) seed(123) nodrop : myboot668
test _b[p1_cons]=_b[p4_cons]

program define myboot669, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if educat==2, r(univ .74 cons .71) cformat(%4.2f)
return scalar p2_cons = _b[cons]
eivreg opideo univ cons sex married black hisp income age rep dem if educat==3, r(univ .74 cons .73) cformat(%4.2f)
return scalar p3_cons = _b[cons]
end

bootstrap p2_cons=r(p2_cons) p3_cons=r(p3_cons),  ///
                  reps(500) seed(123) nodrop : myboot669
test _b[p2_cons]=_b[p3_cons]

program define myboot670, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if educat==2, r(univ .74 cons .71) cformat(%4.2f)
return scalar p2_cons = _b[cons]
eivreg opideo univ cons sex married black hisp income age rep dem if educat==4, r(univ .78 cons .72) cformat(%4.2f)
return scalar p4_cons = _b[cons]
end

bootstrap p2_cons=r(p2_cons) p4_cons=r(p4_cons),  ///
                  reps(500) seed(123) nodrop : myboot670
test _b[p2_cons]=_b[p4_cons]

program define myboot671, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if educat==3, r(univ .74 cons .73) cformat(%4.2f)
return scalar p3_cons = _b[cons]
eivreg opideo univ cons sex married black hisp income age rep dem if educat==4, r(univ .78 cons .72) cformat(%4.2f)
return scalar p4_cons = _b[cons]
end

bootstrap p3_cons=r(p3_cons) p4_cons=r(p4_cons),  ///
                  reps(500) seed(123) nodrop : myboot671
test _b[p3_cons]=_b[p4_cons]

program define myboot672, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if educat==1, r(univ .75 cons .73) cformat(%4.2f)
return scalar p1_univ = _b[univ]
eivreg opideo univ cons sex married black hisp income age rep dem if educat==2, r(univ .74 cons .71) cformat(%4.2f)
return scalar p2_univ = _b[univ]
end

bootstrap p1_univ=r(p1_univ) p2_univ=r(p2_univ),  ///
                  reps(500) seed(123) nodrop : myboot672
test _b[p1_univ]=_b[p2_univ]

program define myboot673, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if educat==1, r(univ .75 cons .73) cformat(%4.2f)
return scalar p1_univ = _b[univ]
eivreg opideo univ cons sex married black hisp income age rep dem if educat==3, r(univ .74 cons .73) cformat(%4.2f)
return scalar p3_univ = _b[univ]
end

bootstrap p1_univ=r(p1_univ) p3_univ=r(p3_univ),  ///
                  reps(500) seed(123) nodrop : myboot673
test _b[p1_univ]=_b[p3_univ]

program define myboot674, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if educat==1, r(univ .75 cons .73) cformat(%4.2f)
return scalar p1_univ = _b[univ]
eivreg opideo univ cons sex married black hisp income age rep dem if educat==4, r(univ .78 cons .72) cformat(%4.2f)
return scalar p4_univ = _b[univ]
end

bootstrap p1_univ=r(p1_univ) p4_univ=r(p4_univ),  ///
                  reps(500) seed(123) nodrop : myboot674
test _b[p1_univ]=_b[p4_univ]

program define myboot675, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if educat==2, r(univ .74 cons .71) cformat(%4.2f)
return scalar p2_univ = _b[univ]
eivreg opideo univ cons sex married black hisp income age rep dem if educat==3, r(univ .74 cons .73) cformat(%4.2f)
return scalar p3_univ = _b[univ]
end

bootstrap p2_univ=r(p2_univ) p3_univ=r(p3_univ),  ///
                  reps(500) seed(123) nodrop : myboot675
test _b[p2_univ]=_b[p3_univ]

program define myboot676, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if educat==2, r(univ .74 cons .71) cformat(%4.2f)
return scalar p2_univ = _b[univ]
eivreg opideo univ cons sex married black hisp income age rep dem if educat==4, r(univ .78 cons .72) cformat(%4.2f)
return scalar p4_univ = _b[univ]
end

bootstrap p2_univ=r(p2_univ) p4_univ=r(p4_univ),  ///
                  reps(500) seed(123) nodrop : myboot676
test _b[p2_univ]=_b[p4_univ]

program define myboot677, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if educat==3, r(univ .74 cons .73) cformat(%4.2f)
return scalar p3_univ = _b[univ]
eivreg opideo univ cons sex married black hisp income age rep dem if educat==4, r(univ .78 cons .72) cformat(%4.2f)
return scalar p4_univ = _b[univ]
end

bootstrap p3_univ=r(p3_univ) p4_univ=r(p4_univ),  ///
                  reps(500) seed(123) nodrop : myboot677
test _b[p3_univ]=_b[p4_univ]

///Table S8
program define myboot900, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==1, r(univ .77 cons .74) cformat(%4.2f)
return scalar p1_cons = _b[cons] 
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==2, r(univ .72 cons .70) cformat(%4.2f)
return scalar p2_cons = _b[cons] 
end 

bootstrap p1_cons=r(p1_cons) p2_cons=r(p2_cons),  ///
                  reps(500) seed(123) nodrop : myboot900
test _b[p1_cons]=_b[p2_cons]

program define myboot901, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==1, r(univ .77 cons .74) cformat(%4.2f)
return scalar p1_cons = _b[cons] 
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==3, r(univ .72 cons .72) cformat(%4.2f)
return scalar p3_cons = _b[cons] 
end 

bootstrap p1_cons=r(p1_cons) p3_cons=r(p3_cons),  ///
                  reps(500) seed(123) nodrop : myboot901
test _b[p1_cons]=_b[p3_cons]

program define myboot902, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==1, r(univ .77 cons .74) cformat(%4.2f)
return scalar p1_cons = _b[cons]
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==4, r(univ .75 cons .73) cformat(%4.2f)
return scalar p4_cons = _b[cons]
end

bootstrap p1_cons=r(p1_cons) p4_cons=r(p4_cons),  ///
                  reps(500) seed(123) nodrop : myboot902
test _b[p1_cons]=_b[p4_cons]

program define myboot903, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==2, r(univ .72 cons .70) cformat(%4.2f)
return scalar p2_cons = _b[cons] 
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==3, r(univ .72 cons .72) cformat(%4.2f)
return scalar p3_cons = _b[cons] 
end 

bootstrap p2_cons=r(p2_cons) p3_cons=r(p3_cons),  ///
                  reps(500) seed(123) nodrop : myboot903
test _b[p2_cons]=_b[p3_cons]

program define myboot904, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==2, r(univ .72 cons .70) cformat(%4.2f)
return scalar p2_cons = _b[cons] 
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==4, r(univ .75 cons .73) cformat(%4.2f)
return scalar p4_cons = _b[cons] 
end 

bootstrap p2_cons=r(p2_cons) p4_cons=r(p4_cons),  ///
                  reps(500) seed(123) nodrop : myboot904
test _b[p2_cons]=_b[p4_cons]

program define myboot905, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==3, r(univ .72 cons .72) cformat(%4.2f)
return scalar p3_cons = _b[cons] 
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==4, r(univ .75 cons .73) cformat(%4.2f)
return scalar p4_cons = _b[cons] 
end 

bootstrap p3_cons=r(p3_cons) p4_cons=r(p4_cons),  ///
                  reps(500) seed(123) nodrop : myboot905
test _b[p3_cons]=_b[p4_cons]

program define myboot906, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==1, r(univ .77 cons .74) cformat(%4.2f)
return scalar p1_univ = _b[univ] 
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==2, r(univ .72 cons .70) cformat(%4.2f)
return scalar p2_univ = _b[univ] 
end 

bootstrap p1_univ=r(p1_univ) p2_univ=r(p2_univ),  ///
                  reps(500) seed(123) nodrop : myboot906
test _b[p1_univ]=_b[p2_univ]

program define myboot907, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==1, r(univ .77 cons .74) cformat(%4.2f)
return scalar p1_univ = _b[univ] 
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==3, r(univ .72 cons .72) cformat(%4.2f)
return scalar p3_univ = _b[univ] 
end 

bootstrap p1_univ=r(p1_univ) p3_univ=r(p3_univ),  ///
                  reps(500) seed(123) nodrop : myboot907
test _b[p1_univ]=_b[p3_univ]

program define myboot908, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==1, r(univ .77 cons .74) cformat(%4.2f)
return scalar p1_univ = _b[univ]
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==4, r(univ .75 cons .73) cformat(%4.2f)
return scalar p4_univ = _b[univ]
end

bootstrap p1_univ=r(p1_univ) p4_univ=r(p4_univ),  ///
                  reps(500) seed(123) nodrop : myboot908
test _b[p1_univ]=_b[p4_univ]

program define myboot909, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==2, r(univ .72 cons .70) cformat(%4.2f)
return scalar p2_univ = _b[univ] 
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==3, r(univ .72 cons .72) cformat(%4.2f)
return scalar p3_univ = _b[univ] 
end 

bootstrap p2_univ=r(p2_univ) p3_univ=r(p3_univ),  ///
                  reps(500) seed(123) nodrop : myboot909
test _b[p2_univ]=_b[p3_univ]

program define myboot910, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==2, r(univ .72 cons .70) cformat(%4.2f)
return scalar p2_univ = _b[univ] 
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==4, r(univ .75 cons .73) cformat(%4.2f)
return scalar p4_univ = _b[univ] 
end 

bootstrap p2_univ=r(p2_univ) p4_univ=r(p4_univ),  ///
                  reps(500) seed(123) nodrop : myboot910
test _b[p2_univ]=_b[p4_univ]

program define myboot911, rclass
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==3, r(univ .72 cons .72) cformat(%4.2f)
return scalar p3_univ = _b[univ] 
eivreg opideo univ cons sex married black hisp income age rep dem if polintr==4, r(univ .75 cons .73) cformat(%4.2f)
return scalar p4_univ = _b[univ] 
end 

bootstrap p3_univ=r(p3_univ) p4_univ=r(p4_univ),  ///
                  reps(500) seed(123) nodrop : myboot911
test _b[p3_univ]=_b[p4_univ]

///Table S12: Symbolic Ideology OLS by Education (alternate coding)
regress ideo univ cons sex married black hisp income age rep dem if educ2==1 [pw=weight],cformat(%4.2f)
est store model101
regress ideo univ cons sex married black hisp income age rep dem if educ2==2 [pw=weight],cformat(%4.2f)
est store model102
regress ideo univ cons sex married black hisp income age rep dem if educ2==3 [pw=weight],cformat(%4.2f)
est store model103
regress ideo univ cons sex married black hisp income age rep dem if educ2==4 [pw=weight],cformat(%4.2f)
est store model104

esttab model101 model102 model103 model104, b(%6.2f) t r2 ///
  title(Table S12: Predicting Symbolic Ideology across Levels of Education, OLS) ///
  nonumbers mtitles("HS" "Some Coll." "BA/BS" "Grad Degree") ///
  addnote("Source: 2015 GfK Survey")  
  
/// Table S13: Symbolic Ideology OLS by Interest (alternate coding)
regress ideo univ cons sex married black hisp income age rep dem if intr2==1 [pw=weight],cformat(%4.2f)
est store model105
regress ideo univ cons sex married black hisp income age rep dem if intr2==2 [pw=weight],cformat(%4.2f)
est store model106
regress ideo univ cons sex married black hisp income age rep dem if intr2==3 [pw=weight],cformat(%4.2f)
est store model107
regress ideo univ cons sex married black hisp income age rep dem if intr2==4 [pw=weight],cformat(%4.2f)
est store model108

esttab model105 model106 model107 model108, b(%6.2f) t r2 ///
  title(Table S13: Predicting Symbolic Ideology across Political Interest Levels, OLS) ///
  nonumbers mtitles("Low" "Some" "Moderate" "High") ///
  addnote("Source: 2015 GfK Survey") 

/// Table S14: Symbolic Ideology EIV by Education (alternate coding)
eivreg ideo univ cons sex married black hisp income age rep dem if educ2==1, r(univ .73 cons .70) cformat(%4.2f)
est store model109

eivreg ideo univ cons sex married black hisp income age rep dem if educ2==2, r(univ .74 cons .72) cformat(%4.2f)
est store model1010

eivreg ideo univ cons sex married black hisp income age rep dem if educ2==3, r(univ .74 cons .74) cformat(%4.2f)
est store model1011

eivreg ideo univ cons sex married black hisp income age rep dem if educ2==4, r(univ .74 cons .73) cformat(%4.2f)
est store model1012

esttab model109 model1010 model1011 model1012, b(%6.2f) t r2 ///
  title(Table S14: Predicting Symbolic Ideology across Levels of education, EIV) ///
  nonumbers mtitles("HS" "Some Coll." "BA/BS" "Grad Degree") ///
  addnote("Source: 2015 GfK Survey")  
  
/// Table S15: Symbolic Ideology EIV by Interest (alternate coding)
eivreg ideo univ cons sex married black hisp income age rep dem if intr2==1, r(univ .76 cons .72) cformat(%4.2f)
est store model1013	

eivreg ideo univ cons sex married black hisp income age rep dem if intr2==2, r(univ .71 cons .71) cformat(%4.2f)
est store model1014

eivreg ideo univ cons sex married black hisp income age rep dem if intr2==3, r(univ .72 cons .72) cformat(%4.2f)
est store model1015

eivreg ideo univ cons sex married black hisp income age rep dem if intr2==4, r(univ .74 cons .73) cformat(%4.2f)
est store model1016

esttab model1013 model1014 model1015 model1016, b(%6.2f) t r2 ///
  title(Table S15: Predicting Symbolic Ideology across Political Interest Levels, EIV) ///
  nonumbers mtitles("Low" "Some" "Moderate" "High") ///
  addnote("Source: 2015 GfK Survey")   

/// Table S16: Operational ideology OLS by Education (alternate coding)
regress opideo univ cons sex married black hisp income age rep dem if educ2==1 [pw=weight],cformat(%4.2f)
est store model1017
regress opideo univ cons sex married black hisp income age rep dem if educ2==2 [pw=weight],cformat(%4.2f)
est store model1018
regress opideo univ cons sex married black hisp income age rep dem if educ2==3 [pw=weight],cformat(%4.2f)
est store model1019
regress opideo univ cons sex married black hisp income age rep dem if educ2==4 [pw=weight],cformat(%4.2f)
est store model1020

esttab model1017 model1018 model1019 model1020, b(%6.2f) t r2 ///
  title(Table S16: Predicting Operational Ideology across Levels of Education, OLS) ///
  nonumbers mtitles("HS" "Some Coll." "BA/BS" "Grad Degree") ///
  addnote("Source: 2015 GfK Survey")  
  
/// Table S17: Operational ideology OLS by Interest (alternate coding)
regress opideo univ cons sex married black hisp income age rep dem if intr2==1 [pw=weight],cformat(%4.2f)
est store model1021
regress opideo univ cons sex married black hisp income age rep dem if intr2==2 [pw=weight],cformat(%4.2f)
est store model1022
regress opideo univ cons sex married black hisp income age rep dem if intr2==3 [pw=weight],cformat(%4.2f)
est store model1023
regress opideo univ cons sex married black hisp income age rep dem if intr2==4 [pw=weight],cformat(%4.2f)
est store model1024

esttab model1021 model1022 model1023 model1024, b(%6.2f) t r2 ///
  title(Table S17: Predicting Operational Ideology across Political Interest Levels, OLS) ///
  nonumbers mtitles("Low" "Some" "Moderate" "High") ///
  addnote("Source: 2015 GfK Survey") 
  
/// Table S18: Operational ideology EIV by Education (alternate coding)
eivreg opideo univ cons sex married black hisp income age rep dem if educ2==1, r(univ .73 cons .70) cformat(%4.2f)
est store model1025
eivreg opideo univ cons sex married black hisp income age rep dem if educ2==2, r(univ .74 cons .72) cformat(%4.2f)
est store model1026
eivreg opideo univ cons sex married black hisp income age rep dem if educ2==3, r(univ .74 cons .74) cformat(%4.2f)
est store model1027
eivreg opideo univ cons sex married black hisp income age rep dem if educ2==4, r(univ .74 cons .73) cformat(%4.2f)
est store model1028

esttab model1025 model1026 model1027 model1028, b(%6.2f) t r2 ///
  title(Table S18: Predicting Operational Ideology across Levels of Education, EIV) ///
  nonumbers mtitles("HS" "Some Coll." "BA/BS" "Grad Degree") ///
  addnote("Source: 2015 GfK Survey")   

/// Table S19: Operational Ideology EIV by Interest (alternate coding)
eivreg opideo univ cons sex married black hisp income age rep dem if intr2==1, r(univ .76 cons .72) cformat(%4.2f)
est store model1029
eivreg opideo univ cons sex married black hisp income age rep dem if intr2==2, r(univ .71 cons .71) cformat(%4.2f)
est store model1030
eivreg opideo univ cons sex married black hisp income age rep dem if intr2==3, r(univ .72 cons .72) cformat(%4.2f)
est store model1031
eivreg opideo univ cons sex married black hisp income age rep dem if intr2==4, r(univ .74 cons .73) cformat(%4.2f)
est store model1032

esttab model1029 model1030 model1031 model1032, b(%6.2f) t r2 ///
  title(Table S19: Predicting Operational Ideology  across Political Interest Levels, EIV) ///
  nonumbers mtitles("Low" "Some" "Moderate" "High") ///
  addnote("Source: 2015 GfK Survey") 

///Table S20: Interaction between basic values and education, OLS estimates
regress ideo c.univ##c.edunocat c.cons##c.edunocat sex married black hisp income age i.rep##c.edunocat i.dem##c.edunocat [pw=weight],cformat(%4.2f)
est store model1070
regress opideo c.univ##c.edunocat c.cons##c.edunocat sex married black hisp income age i.rep##c.edunocat i.dem##c.edunocat [pw=weight],cformat(%4.2f)
est store model1071

esttab model1070 model1071, b(%6.2f) t r2 ///
  title(Table S20: Predicting Symbolic and Operational Ideology, Interacted Regressions) ///
  nonumbers mtitles("Symb. Ideo" "Op. Ideo") ///
  addnote("Source: 2015 GfK Survey") 

///Table S21: Interaction between basic values and political interest, OLS estimates
regress ideo c.univ##c.intrnocat c.cons##c.intrnocat sex married black hisp income age i.rep##c.intrnocat i.dem##c.intrnocat [pw=weight],cformat(%4.2f)
est store model1072
regress opideo c.univ##c.intrnocat c.cons##c.intrnocat sex married black hisp income age i.rep##c.intrnocat i.dem##c.intrnocat [pw=weight],cformat(%4.2f)
est store model1073

esttab model1072 model1073, b(%6.2f) t r2 ///
  title(Table S21: Predicting Symbolic and Operational Ideology, Interacted Regressions 2) ///
  nonumbers mtitles("Symb. Ideo" "Op. Ideo") ///
  addnote("Source: 2015 GfK Survey") 

///Table S22: R2 comparisons for OLS models (with and without controls)
///R2 for OLS models with controls are taken from tables S1, 2, 5, and 6 ///Below are the equivalent no contols models
/// Table S1: Symbolic Ideology OLS by Educ
regress ideo univ cons  if educat==1 [pw=weight],cformat(%4.2f)
est store model201
regress ideo univ cons  if educat==2 [pw=weight],cformat(%4.2f)
est store model202
regress ideo univ cons  if educat==3 [pw=weight],cformat(%4.2f)
est store model203
regress ideo univ cons  if educat==4 [pw=weight],cformat(%4.2f)
est store model204

esttab model201 model202 model203 model204, b(%6.2f) t r2 ///
  title(Table S1: Predicting Symbolic Ideology across Levels of Education, OLS) ///
  nonumbers mtitles("< HS" "HS/HS+" "BA/BS/Mast" "PhD") ///
  addnote("Source: 2015 GfK Survey")  

/// Table S2: Symbolic Ideology OLS by Interest
regress ideo univ cons  if polintr==1 [pw=weight],cformat(%4.2f)
est store model205
regress ideo univ cons  if polintr==2 [pw=weight],cformat(%4.2f)
est store model206
regress ideo univ cons  if polintr==3 [pw=weight],cformat(%4.2f)
est store model207
regress ideo univ cons  if polintr==4 [pw=weight],cformat(%4.2f)
est store model208

esttab model205 model206 model207 model208, b(%6.2f) t r2 ///
  title(Table S2: Predicting Symbolic Ideology across Political Interest Levels, OLS) ///
  nonumbers mtitles("None" "A little" "Some" "High") ///
  addnote("Source: 2015 GfK Survey") 

/// Table S5: Operational ideology OLS by Educ
regress opideo univ cons  if educat==1 [pw=weight],cformat(%4.2f)
est store model2017
regress opideo univ cons  if educat==2 [pw=weight],cformat(%4.2f)
est store model2018
regress opideo univ cons  if educat==3 [pw=weight],cformat(%4.2f)
est store model2019
regress opideo univ cons  if educat==4 [pw=weight],cformat(%4.2f)
est store model2020

esttab model2017 model2018 model2019 model2020, b(%6.2f) t r2 ///
  title(Table S5: Predicting Operational Ideology across Levels of Education, OLS) ///
  nonumbers mtitles("< HS" "HS/HS+" "BA/BS/Mast" "PhD") ///
  addnote("Source: 2015 GfK Survey")  

/// Table S6: Operational ideology OLS by Interest
regress opideo univ cons  if polintr==1 [pw=weight],cformat(%4.2f)
est store model2021
regress opideo univ cons  if polintr==2 [pw=weight],cformat(%4.2f)
est store model2022
regress opideo univ cons  if polintr==3 [pw=weight],cformat(%4.2f)
est store model2023
regress opideo univ cons  if polintr==4 [pw=weight],cformat(%4.2f)
est store model2024

esttab model2021 model2022 model2023 model2024, b(%6.2f) t r2 ///
  title(Table S6: Predicting Operational Ideology across Political Interest Levels, OLS) ///
  nonumbers mtitles("None" "A little" "Some" "High") ///
  addnote("Source: 2015 GfK Survey") 
  
/// Table S23: Symbolic Ideology OLS by Education (alternate values coding)
regress ideo univs2 conss2 sex married black hisp income age rep dem if educat==1 [pw=weight],cformat(%4.2f)
est store model5000
regress ideo univs2 conss2 sex married black hisp income age rep dem if educat==2 [pw=weight],cformat(%4.2f)
est store model5001
regress ideo univs2 conss2 sex married black hisp income age rep dem if educat==3 [pw=weight],cformat(%4.2f)
est store model5002
regress ideo univs2 conss2 sex married black hisp income age rep dem if educat==4 [pw=weight],cformat(%4.2f)
est store model5003

esttab model5000 model5001 model5002 model5003, b(%6.2f) t r2 ///
  title(Table S23: Predicting Symbolic Ideology across Education Levels, OLS) ///
  nonumbers mtitles("None" "A little" "Some" "High") ///
  addnote("Source: 2015 GfK Survey") 

/// Table S24: Symbolic Ideology OLS by interest (alternate values coding)
 regress ideo univs2 conss2 sex married black hisp income age rep dem if polintr==1 [pw=weight],cformat(%4.2f)
est store model5004
regress ideo univs2 conss2 sex married black hisp income age rep dem if polintr==2 [pw=weight],cformat(%4.2f)
est store model5005
regress ideo univs2 conss2 sex married black hisp income age rep dem if polintr==3 [pw=weight],cformat(%4.2f)
est store model5006
regress ideo univs2 conss2 sex married black hisp income age rep dem if polintr==4 [pw=weight],cformat(%4.2f)
est store model5007

esttab model5004 model5005 model5006 model5007, b(%6.2f) t r2 ///
  title(Table S24: Predicting Symbolic Ideology across Interest Levels, OLS) ///
  nonumbers mtitles("None" "A little" "Some" "High") ///
  addnote("Source: 2015 GfK Survey") 

/// Table S25: Operational Ideology OLS by Education (alternate values coding)
regress opideo univs2 conss2 sex married black hisp income age rep dem if educat==1 [pw=weight],cformat(%4.2f)
est store model5008
regress opideo univs2 conss2 sex married black hisp income age rep dem if educat==2 [pw=weight],cformat(%4.2f)
est store model5009
regress opideo univs2 conss2 sex married black hisp income age rep dem if educat==3 [pw=weight],cformat(%4.2f)
est store model5010
regress opideo univs2 conss2 sex married black hisp income age rep dem if educat==4 [pw=weight],cformat(%4.2f)
est store model5011

esttab model5008 model5009 model5010 model5011, b(%6.2f) t r2 ///
  title(Table S25: Predicting Operational Ideology across Education Levels, OLS) ///
  nonumbers mtitles("None" "A little" "Some" "High") ///
  addnote("Source: 2015 GfK Survey") 

/// Table S26: Operational Ideology OLS by interest (alternate values coding)
regress opideo univs2 conss2 sex married black hisp income age rep dem if polintr==1 [pw=weight],cformat(%4.2f)
est store model5012
regress opideo univs2 conss2 sex married black hisp income age rep dem if polintr==2 [pw=weight],cformat(%4.2f)
est store model5013
regress opideo univs2 conss2 sex married black hisp income age rep dem if polintr==3 [pw=weight],cformat(%4.2f)
est store model5014
regress opideo univs2 conss2 sex married black hisp income age rep dem if polintr==4 [pw=weight],cformat(%4.2f)
est store model5015

esttab model5012 model5013 model5014 model5015, b(%6.2f) t r2 ///
  title(Table S26: Predicting Operational Ideology across Interest Levels, OLS) ///
  nonumbers mtitles("None" "A little" "Some" "High") ///
  addnote("Source: 2015 GfK Survey") 
